#include <iostream>
#include <vector>

// 定义一个模板函数convert_all_to，该函数接受任意数量和类型的参数，并将每个参数转换为指定的类型T
template<typename T, typename... Args>
std::vector<T> convert_all_to(Args&&... args) {
    return std::vector<T>{static_cast<T>(args)...};
}

int main() {
    // 将不同类型的参数转换为double，并封装到一个vector中
    auto vectorOfDoubles = convert_all_to<double>(1, 2.5, 'a');  // 字符'a'将转换为其ASCII值

    // 将不同类型的参数转换为int，并封装到一个vector中
    auto vectorOfInts = convert_all_to<int>(1, 2.5, 'a');  // 浮点数2.5将转换为2，字符'a'将转换为其ASCII值

    // 使用范围for循环来打印vector中的所有值
    std::cout << "Doubles: ";
    for (auto& value : vectorOfDoubles) {
        std::cout << value << ' ';
    }
    std::cout << "\nInts: ";
    for (auto& value : vectorOfInts) {
        std::cout << value << ' ';
    }
    std::cout << std::endl;

    return 0;
}